package grafica.vista;

import grafica.Forma;
import grafica.base.RettangoloBase;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.geom.Area;

public class RettangoloVista implements Forma {
	
	private RettangoloBase rett;
	private Color colore;
	private boolean riempimento;
	/**
	 * @return the riempimento
	 */
	public boolean isRiempimento() {
		return riempimento;
	}

	/**
	 * @param riempimento the riempimento to set
	 */
	public void setRiempimento(boolean riempimento) {
		this.riempimento = riempimento;
	}

	/**
	 * @param rett
	 */
	public RettangoloVista(RettangoloBase rett) {
		super();
		this.rett = rett;
	}

	public RettangoloVista() {
		super();
		// TODO Auto-generated constructor stub
	}

	@Override
	public void draw(Graphics oggetto) {
		oggetto.drawRect(rett.getX(), rett.getY(), rett.getBase(), rett.getAltezza());
		if(riempimento){
			Color precedente=oggetto.getColor();
			oggetto.setColor(this.colore);
			oggetto.fillRect(rett.getX(), rett.getY(), rett.getBase(), rett.getAltezza());	
			oggetto.setColor(precedente);
		}
	}
	/**
	 * @return the rett
	 */
	public RettangoloBase getRett() {
		return rett;
	}
	/**
	 * @param rett the rett to set
	 */
	public void setRett(RettangoloBase rett) {
		this.rett = rett;
	}
	
	public boolean puntoAppartenenza(int x,int y){
		if(x>this.rett.getX()&&x<this.rett.getX()+this.rett.getBase()&&y>this.rett.getY()&&y<this.rett.getY()+this.rett.getAltezza()){
		return true;
		}
		return false;
	}
	
	public boolean intersezioneRettangolo(RettangoloBase istanza) {
		Area are=new Area(new Rectangle(this.getRett().getX(),this.getRett().getY(),this.getRett().getBase(),this.getRett().getAltezza()));
		if(are.intersects(istanza.getX(), istanza.getY(), istanza.getBase(), istanza.getAltezza()))
			return true;
		return false;
	}
	/**
	 * @return the colore
	 */
	public Color getColore() {
		return colore;
	}
	/**
	 * @param colore the colore to set
	 */
	public void setColore(Color colore) {
		this.colore = colore;
	}
	public Object clone() throws CloneNotSupportedException {
		RettangoloVista copia;
		try{
			 copia=new RettangoloVista(new RettangoloBase(this.getRett().getX(), this.getRett().getY(), this.getRett().getBase(), this.getRett().getAltezza()));
		}catch(Exception e){
			copia=null;
		}
			return copia;
	}
}
